﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Exec
{
    /* 내부 데이터 클래스 */
    public class Symbol<T>
    {
        private Dictionary<string, T> table;

        public Symbol()
        {
            table = new Dictionary<string, T>();
        }
        
        // 새로운 변수 할당
        public void Set(string pf, string c, T val)
        {
            lock (table)
            {
                table[pf + "_" + c] = val;
            }

        }

        // 변수값 얻기
        public T Get(string pf, string c)
        {
            T t;

            lock (table)
            {
                try
                {
                    t = table[pf + "_" + c];
                }
                catch (Exception ex)
                {
                    return default(T);
                }
            }

            return t;
        }

        public bool Remove(string pf, string c)
        {
            bool arg;
            
            lock (table)
            {
                arg = table.Remove(pf + "_" + c);
            }

            return arg;
        }

        public void Print()
        {
            foreach (KeyValuePair<string, T> kv in table)
            {
                Console.WriteLine(kv.Key);
            }
        }
    }
}
